// 给定两个字符串 s 和 p，找到 s 中所有 p 的 异位词 的子串，返回这些子串的起始索引。不考虑答案输出的顺序。

// 异位词 指字母相同，但排列不同的字符串。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/find-all-anagrams-in-a-string
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。


// 33超时
#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<unordered_set>
#include<unordered_map>
#include<set>
#include<queue>
#include<stack>
using namespace std;

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        vector<int> res;
        if(s.size()<p.size()){
            return res;
        }
        unordered_map<string,bool> hash;
        sort(p.begin(),p.end());
        hash[p]=true;
        int len=p.size();
        for(int i=0;i<s.size()-len+1;i++){
            string stemp=s.substr(i,len);
            sort(stemp.begin(),stemp.end());
            if(hash[stemp]==true){
                res.push_back(i);
            }
        }
        return res;
    }
};